package com.example.makerspace.service;

import com.example.makerspace.dto.*;
import com.example.makerspace.vo.ExpertTaskSocreVO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface ExpertService {
    Result showExpertList(PageRequest pageRequest);

    Result showExpertDetail(Integer id);

    Result addExpert(ExpertInfoDTO expertInfoDTO);

    Result updateExpert(ExpertInfoDTO expertInfoDTO);

    Result deleteExpert(Integer id);

    Result getExpert(PageRequest pageRequest);

    Result getExpertType();

    Result productLists();

    Result sendTask(ExpertTaskDTO expertTaskDTO);

    Result listTask(HttpServletRequest request);

    Result expertScore(ExpertProductScoreDTO expertProductScoreDTO);

    Result updateTask(ExpertTaskDTO expertTaskDTO);

    Result deleteTask(Integer id);

    Result listPageTask(PageRequest pageRequest);



    Result receiveTask(String op, Integer id, HttpServletRequest request);

    Result listExpertScore(PageRequest pageRequest,HttpServletRequest request);

    Result listAllExpertScore(ExpertProductScoreDTO expertProductScoreDTO);

    Result listOutcome(PageRequest pageRequest, HttpServletRequest request);

    void onlinePreview(String url, HttpServletResponse response);

    Result showResults(PageRequest pageRequest);

    Result taskBindOutcome(ExpertTaskDTO expertTaskDTO);


    Result showOutcomeExpert(Integer taskId);

    Result getScoreCondition(HttpServletRequest request, Integer taskId, Integer outcomeId);

    Result uploadFile(ExpertOutcomeDTO expertOutcomeDTO);

    Result expertUpdateScore(ExpertProductScoreDTO expertProductScoreDTO);

    Result addOutCome(ExpertOutcomeDTO expertOutcomeDTO);

    Result updateOutCome(ExpertOutcomeDTO expertOutcomeDTO);

    Result deleteOutCome(Integer id);

    Result addTaskExpert(ExpertTaskDTO expertTaskDTO);


    ExpertTaskSocreVO showTaskList();

    List<List<String>> expertList();

    List<List<String>> scoreList();

    List<List<String>> outcomeList();

    List<Integer> OverviewDate();

    Result reviewProgress();

    Result taskBindExpert(Integer id, String username, String name);

    ExpertTaskSocreVO showTaskListv2();

    List<List<String>> expertListv2();

    List<List<String>> scoreListv2();

    List<List<String>> outcomeListv2();

    List<Integer> OverviewDatev2();

    Result reviewProgressv2();

    Result showExpertScore(Integer id);
}
